草庐IT

【JavaEE】Thread 类及常用方法

全部标签

go - 与具有 interface{} 参数的方法的接口(interface)不起作用

我正在尝试在Go中实现一些接口(interface)。我有接口(interface)A:typeInterfaceAinterface{read(interface{})string}然后我有InterfaceB:typeInterfaceBinterface{fetch()}我有一个函数:funcRead(aInterfaceA){}我有StructA,它通过它的方法满足InterfaceA,但它没有变量“interface{}”,而是像这样传递给InterfaceB:typeStructAstruct{}func(a*StructA)read(bInterfaceB)string{

go - 如何在 Go 中将方法作为参数传递?

我只想将它们属于“任何”结构的一些方法传递给它们的接收器方法。这些是原型(prototype)方法。func(r*Rules)Checker(fn...func()){}func(r*Rules)CheckEmpty(){}func(r*Rules)CheckMax(){}我想要的是这里:v.Rule.Checker(v.Rule.CheckEmpty(),v.Rule.CheckMax(),)但我认为函数类型不相等,程序给我错误“typevoidtypeastypefunc()”。有没有办法按照我的意愿调用这些方法? 最佳答案 您

mysql - 如何测试mysql的insert方法

我正在Go中设置测试。我使用go-sqlmock来测试mysql连接。现在我尝试测试mysqlinsert逻辑。但是出现错误。我想知道如何解决这个错误。serverside:golangdb:mysqlwebframework:gindao.gofuncPostDao(db*sql.DB,articleutil.Article,uustring){ins,err:=db.Prepare("INSERTINTOarticles(uuid,title,content)VALUES(?,?,?)")iferr!=nil{log.Fatal(err)}ins.Exec(uu,article.T

go - 将接口(interface)指针片转换为结构指针片的最有效方法是哪种?

这个问题已经有了答案:Typeconvertingslicesofinterfaces5答最基本的问题是我得到了一个[]*interface{},我需要把它转换成[]*MyStruct。我在尝试这样的方法,但速度不快。在我的例子中,在示例代码中,lines片段包含映射,因此硬转换不起作用。varlines[]*interface{}varresults[]*MyStructfor_,s:=rangelines{ifs!=nil{someJson,err:=json.Marshal(s)iferr!=nil{continue}v:=MyStruct{}iferr:=json.Unmars

pointers - X不实现Y(…方法具有指针接收器)

关于“x不实现y(…方法有一个指针接收器)“事情,但对我来说,他们似乎在谈论不同的事情,而不适用于我的具体情况。所以,我不是把这个问题说得很具体,而是把它说得宽泛而抽象--似乎有几种不同的情况会导致这个错误发生,有人能总结一下吗?也就是说,如何避免这个问题,如果它发生了,有什么可能性?谢谢。 最佳答案 当您试图将具体类型分配或传递(或转换)给接口类型时,会出现此编译时错误;而该类型本身并没有实现接口,只是指向该类型的指针。让我们看一个例子:typeStringerinterface{String()string}typeMyType

go - 导出的方法在同一个包中不可用

我有一个小的golang项目,在main.go文件中有一些处理程序引用session.go文件中的session相关方法。两者在文件顶部都有packagemain。session.go文件中的函数都以大写字母开头(即它们是公共(public)/导出方法)。然而,当我运行main.go文件时,它说位于session.go中并从main.go调用的方法是未定义。为什么会这样,如何解决。我正在运行项目gorunmain.go主.gofunclogout(whttp.ResponseWriter,r*http.Request){ClearSession(w,r)....}session.gof

struct - 在将它作为接口(interface)传递并运行它的方法后,让你将结构恢复为它的数据类型?

我有一个结构如下typeMyStruct{EmbeddedFooBar}func(m*MyStruct)Foo(b*http.Request){//Doingsomething}funcfn(args...interfaces){//It'shereIwanttogetmystructbackandrunthe"Get"method//PleasekeepinmindIamtoopassapointerparamintothestructmethodstrt:=args[0]....getstructbacktostaticdatatypeMyStructandrun"Get()",d

go - 如何在 Go main 方法中重定向 URL?

我在Go中设置了一个GorrilaMux,如果在浏览器中输入特定的URL,它将进行API调用。如果URL作为命令行参数给出,我想在我的主要方法中进行相同的API调用。然而,似乎能够做到这一点的http.redirect()方法需要一个HTTPResponseWriter和一个*HTTPRequest变量作为函数参数。我不知道如何在main方法中生成这些变量。我该怎么做,或者是否有更好的方法从Golang中的URL调用API?设置路由器的代码funcmain(){router:=mux.NewRouter().StrictSlash(true)for_,route:=rangeroute

go - 如何在 Go 方法中调用/打开 URL?

我在Go中设置了一个GorillaMux路由器。我在该路由器中设置了路由,以及与这些路由关联的函数处理程序。如果您打开浏览器窗口并输入特定的URL,路由器将完美运行。但是,我遇到的问题是,如果在命令行中输入了URL,该怎么办。我知道如何从命令行参数存储URL,但我不知道如何将存储为URL变量的URL转发到路由器。比如,如果URL是在命令行上给出的,而不是通过浏览器窗口输入的,那么你如何调用路由的函数处理程序?代码:u,err:=url.Parse(os.Args[1])iferr!=nil{fmt.Println(err.Error())}host,port,_:=net.SplitH

go - 编写优先级队列时如何向用户隐藏堆方法?

我正在关注thiscode实现优先级队列。我不喜欢的是,当在main方法中使用它时,用户必须调用heap.Push和heap.Pop。让我的优先级队列包含一个堆,而不是将它包装在一个堆中,对我来说更有意义。我是不是想错了,或者示例代码是否显示了在Golang中执行此操作的正确方法? 最佳答案 我创建了一个调用heap.Push和heap.Pop的包装器类。packagehuffmanimport"container/heap"typeRunePriorityQueuestruct{queuePriorityQueue}func(Ru